FIG. 1 illustrates a conventional relational database network. The network comprises an application server 102 and a database server 104. As is known in the art, in object-oriented application systems, a component model is used to implement application programs at the application server 102. These application programs combine individual components into a global transaction using two-phase commit protocols. In many of these systems, it is desirable to have the individual components provide local transparency, so that the location of the component within the network is transparent to the caller. When components are constructed in this way, it is common for each individual component to create and destroy a separate database connection each time it accesses data in a relational database.
If the application is developed with a fine grain component model, the application server 102 may require a large number of physical connections to the database server 104 for a single global transaction. This results in hundreds of physical connections in order to complete the execution of the transaction.
For example, assume that an application at the application server 102 invokes a global transaction with a plurality of components. Each component is assigned a logical connection 108.1-108.3. Through the database driver 106 at the application server 102, each logical connection 108.1-108.3 is connected to the database server 104. However, for each logical connection 108.1-108.3, a separate physical connection 116.1-116.3 between the application server 102 and the database server 104 is created. Requests are then sent from the logical connections 108.1-108.3 to the database server 104 using the physical connections 116.1-116.3. Because the logical connections 108.1-108.3 are parts of the same global transaction, the requests are assigned the same global transaction identifier (GTRID1). At the database server 104, each request from the logical connections 108.1-108.3 is forwarded to a separate logical agent 112.1-112.3. The logical agents 112.1-112.3 service the requests sent through the logical connections 108.1-108.3, respectively. Once both sides of the two-phase commit/global transaction commits, the physical connections 116.1-116.3 are released.
Assume that a second global transaction is invoked by the application at the application server 102. The second global transaction also has a plurality of components. Each component is assigned a logical connection 110.1-110.3. Through the database driver 106, each logical connection 110.1-110.3 is connected to the database server 104. However, for each logical connection 110.1-110.3, a separate physical connection 118.1-118.3 between the application server 102 and the database server 104 is created. Because the logical connections 110.1-110.3 are parts of the same global transaction, they are assigned the same global transaction identifier (GTRID2). At the database server 104, each request from the logical connections 110.1-110.3 is forwarded to a separate logical agent 114.1-114.3. The logical agents 114.1-114.3 service the requests sent through the logical connections 110.1-110.3, respectively. Once both sides of the second global transaction commits, the physical connection 118.1-118.3 are released.
However, because for each logical connection 108.1-108.3 and 110.1-110.3, a separate physical connection 116.1-116.3 and 118.1-118.3 is created, because requests for each logical connection are serviced by separate logical agents at the database server 104, and because the physical connections 116.1-116.3 and 118.1-118.3 are not released until both sides of the transaction commits, the scalability and performance of the underlying relational database engine is severely limited. This problem is particularly acute for applications that require numerous database connections for a global transaction.
Accordingly, there exists a need for an improved method and system for providing database connections for a global transaction in a relational database system. The method and system should provide scalability, even for application developed with a fine grain component model. The present invention addresses such a need.